package service

import (
	"context"
	"github.com/star-find-cloud/star-chat/group/domain"
)

type GroupService interface {
	// Create 群组
	Create(ctx context.Context, group *domain.Group) (int64, error)

	// Get 获取群组元数据
	Get(ctx context.Context, id int64) (*domain.Group, error)
	// GetByMasterID 通过群主id获取群组元数据
	GetByMasterID(ctx context.Context, masterID int64) ([]*domain.Group, error)
	// GetByName 通过群组名称获取群组元数据
	GetByName(ctx context.Context, name string) ([]*domain.Group, error)

	// Update 修改群组元数据
	Update(ctx context.Context, group *domain.Group) error
	// UpdateMaster 修改群组群主
	UpdateMaster(ctx context.Context, newMasterID, id int64) error
	// UpdateName 修改群组名称
	UpdateName(ctx context.Context, id int64, name string) error
	// UpdateAvatar 修改群组头像
	UpdateAvatar(ctx context.Context, id int64, avatar int64) error
	// Ban 封禁群组
	Ban(ctx context.Context, id int64) error
	//Unban 解封群组
	Unban(ctx context.Context, id int64) error
	// KickOutUser 踢出群成员
	KickOutUser(ctx context.Context, id int64, userID int64) error
	// AddUser 添加群成员
	AddUser(ctx context.Context, id int64, userID int64) error

	// Delete 删除群组
	Delete(ctx context.Context, id int64) error
}
